در این پروژه رخدادهای امنیت پروازها از سال ۱۹۱۹ تا کنون را بررسی می کنیم.
توضیحات نحوه ی جمع آوری داده ها و پاکسازی آن در فایل report.pdf آمده است. همچنین در فاز پیشین تحلیل مکاشفه ای بر روی داده ها صورت گرفته و به سوالات ۱ و ۶ و ۷ پاسخ داده شده بود.
داده های ذخیره شده از طریق لینک زیر قابل دسترسی است:
https://github.com/Ajal88/DA_Project
کتابخانه های مورد نیاز و بارگذاری داده ها
library(readr)
library(dplyr)
library(stringr)
library(highcharter)
library(ggplot2)
library(stringr)
library(topicmodels)
library(tidytext)
casn <- readr::read_csv("Data/asn_c.csv") %>% as.data.frame(stringsAsFactors = F) %>%
mutate(Total_occupants = ifelse(Total_occupants == 0 & Total_fatalities != 0, Total_fatalities, Total_occupants),
Total_survivors = abs(Total_occupants - Total_fatalities)) %>%
mutate(Total_survivors = ifelse(Total_survivors > Total_occupants, Total_occupants, abs(Total_occupants - Total_fatalities))) %>%
mutate(is_army = str_detect(Operator, regex("Force|Navy",ignore_case = T))) %>%
mutate(occ_no = row_number())۱. آنالیز متن و دسته بندی علت وقوع مشکلات پرواز ها
برای این منظور می خواهیم از مدل lda استفاده کنیم. به همین دلیل ابتدا از داده های اصلی تنها شماره ی تصادف و Narrative را انتخاب می کنیم. سپس علت سقوط را به کلمات آن تبدیل می کنیم و stopwords را از آن حذف می کنیم. سپس کلمات رایج در سقوط هواپیما همچون هواپیما و پرواز را از کلمات حذف می کنیم. در نهایت نیز تعداد تکرار هر لغت را برای هر Narrative بدست می آوریم. سپس از آنجایی که LDA با DocumentTermMatrix کار می کند، ساختار داده ی خود را به این صورت تغییر می دهیم. در نهایت نیز مدل خود را با ۲۰ topic لرن می کنیم. از آنجایی که لرن مدل وقت گیر است، مدل را برای استفاده ی آینده ذخیره می کنیم.
cause <- casn %>% select(occ_no, Narrative)
# split into words
cause_word <- cause %>%
unnest_tokens(output = word, input = Narrative)
# plane stopwords
word = c("aircraft", "airplane", "plane", "flight")
plane_stop_words = data_frame(word)
word_counts <- cause_word %>%
anti_join(stop_words) %>%
anti_join(plane_stop_words) %>%
count(occ_no, word, sort = TRUE)
flight_dtm <- word_counts %>%
cast_dtm(occ_no, word, n)accident_lda <- LDA(flight_dtm, k = 20, control = list(seed = 1234))
saveRDS(accident_lda, file="Data/lda.rds")accident_lda = readRDS(file="Data/lda.rds")سپس برای هر topic پنج کلمه ای که بیشترین احتمال حضور در این موضوع دارد را نمایش می دهیم.
accident_topics <- tidy(accident_lda, matrix = "beta")
top_terms <- accident_topics %>%
group_by(topic) %>%
top_n(5, beta) %>%
ungroup() %>%
arrange(topic, -beta)top_terms %>%
mutate(term = reorder(term, beta)) %>%
ggplot(aes(term, beta, fill = factor(topic))) +
geom_col(show.legend = FALSE) +
facet_wrap(~ topic, scales = "free", nrow = 5) +
coord_flip()top_terms_merge <- top_terms %>% group_by(topic) %>% summarise(words = paste(term, collapse=", "))
knitr::kable(top_terms_merge)| topic | words |
|---|---|
| 1 | landing, gear, main, collapsed, undercarriage |
| 2 | sea, missing, water, hit, hangar |
| 3 | runway, feet, short, left, rest |
| 4 | crash, terrain, lake, airstrip, pilot |
| 5 | engine, fuel, wing, left, takeoff |
| 6 | pilot, crew, test, cabin, system |
| 7 | hijacker, demanded, hijackers, passengers, 1 |
| 8 | runway, captain, feet, approach, pilot |
| 9 | damage, airport, sustained, substantial, accident |
| 10 | crashed, mountain, 2, km, antonov |
| 11 | accident, destroyed, killed, airport, crew |
| 12 | fire, caught, ground, destroyed, de |
| 13 | feet, departed, crew, reported, cleared |
| 14 | engine, takeoff, landing, forced, lost |
| 15 | damaged, repair, accident, reportedly, raf |
| 16 | airport, boeing, international, air, otter |
| 17 | dc, 3, struck, 4, douglas |
| 18 | en, route, night, operation, NA |
| 19 | air, force, transport, base, flying |
| 20 | approach, weather, pilot, conditions, visibility |
۲. رتبه بندی علت وقوع مشکلات برای پرواز ها
برای این بخش احتمال هر تاپیک برای هر سند را بدست می آوریم. (gamma) سپس تاپیکی که بیشترین احتمال را داراست به عنوان موضوع سند انتخاب می کنیم. سپس پروازها را بر اساس تاپیک دسته بندی کردی و تعداد رخدادهای امنیتی هر تاپیک را بدست می آوریم. نمودار علت سقوط پروازها بر اساس تعداد تکرار به صورت زیر است:
accidents_gamma <- tidy(accident_lda, matrix = "gamma")
accidents_data <- accidents_gamma %>% group_by(document) %>%
top_n(1, gamma) %>%
ungroup()
accident_summary <- accidents_data %>% group_by(topic) %>% summarise(count = n()) %>%
arrange(desc(count))
accident_summary <- accident_summary %>% inner_join(top_terms_merge, by = c("topic"))
occurance_sum = sum(accident_summary$count)
accident_summary <- accident_summary %>% mutate(count_percent = 100*count/occurance_sum)
knitr::kable(accident_summary %>% select(-count_percent))| topic | count | words |
|---|---|---|
| 10 | 2169 | crashed, mountain, 2, km, antonov |
| 15 | 1816 | damaged, repair, accident, reportedly, raf |
| 14 | 1672 | engine, takeoff, landing, forced, lost |
| 19 | 1296 | air, force, transport, base, flying |
| 9 | 1212 | damage, airport, sustained, substantial, accident |
| 7 | 1206 | hijacker, demanded, hijackers, passengers, 1 |
| 3 | 1184 | runway, feet, short, left, rest |
| 11 | 1122 | accident, destroyed, killed, airport, crew |
| 20 | 1024 | approach, weather, pilot, conditions, visibility |
| 2 | 986 | sea, missing, water, hit, hangar |
| 18 | 893 | en, route, night, operation, NA |
| 1 | 875 | landing, gear, main, collapsed, undercarriage |
| 13 | 862 | feet, departed, crew, reported, cleared |
| 12 | 741 | fire, caught, ground, destroyed, de |
| 5 | 673 | engine, fuel, wing, left, takeoff |
| 8 | 667 | runway, captain, feet, approach, pilot |
| 6 | 640 | pilot, crew, test, cabin, system |
| 4 | 636 | crash, terrain, lake, airstrip, pilot |
| 17 | 633 | dc, 3, struck, 4, douglas |
| 16 | 570 | airport, boeing, international, air, otter |
accident_summary %>% arrange(topic) %>%
hchart(type = "pie", hcaes(x = words ,y = count_percent)) %>%
hc_yAxis(title = list(text = "Count")) %>%
hc_xAxis(title = list(text = "Topic")) %>%
hc_title(text = "Airsafety Occurance Based on Topic", style = list(fontWeight = "bold")) %>%
hc_add_theme(hc_theme_538())۳. آیا در صورت سقوط پرواز یک ایرلاین، دیگر نباید با آن پرواز کنیم؟
برای بررسی این روند نمودار تعداد حوادث شرکتهای هواپیماییای که دادههای مناسبی را داشتند را مورد بررسی کردیم، شرکتّهای منتخب ما دارای تلفات قابل توجه و تعداد سالهای حادثهخیز بیشتر از ۲ است. همانطور که در نمودار قابل رویت است بیشتر این شرکتها بعد از رسیدن به یک نقطهی اوج از سوانح هوایی آن را رفته رفته تعدیل کردند و به وضوح روند خود را بهبود بخشیدهاند پس نمیتوان این گزاره را صحیح دانست.
library(highcharter)
library(ggplot2)
company_year = read_csv("Data/asn_c.csv") %>% as.data.frame(stringsAsFactors = F) %>%
mutate(Total_occupants = ifelse(Total_occupants == 0 & Total_fatalities != 0, Total_fatalities, Total_occupants),
Total_survivors = abs(Total_occupants - Total_fatalities)) %>%
mutate(is_army = str_detect(Operator, regex("Force|Navy",ignore_case = T))) %>%
filter(is_army == FALSE) %>%
select(C.n.msn,
year = Date,
Operator,
FirstFlight,
Total_occupants,
Total_fatalities,
TotalAirframeHrs,
Crew_occupants) %>%
na.omit() %>%
group_by(Operator, year) %>%
summarise(count = n(), tot_fatal = sum(Total_fatalities), tot_occu = sum(Total_occupants)) %>%
filter(tot_occu > 10 & tot_fatal > 5) %>%
mutate(index = 1, index = cumsum(index), index = max(index)) %>%
filter(index > 2) %>%
select(-index) %>%
mutate(death_rate = tot_fatal*100/tot_occu)
company_year %>%
hchart(type = "line",
hcaes(x = year, y = count, group = Operator)) %>%
hc_xAxis(title = list(text = "year")) %>%
hc_yAxis(title = list(text = "Accidents Count"),
max = 22,
tickInterval = 1,
min = 0,
plotLines = list(list(color = "#FF0000",
width = 2,
value = 11,
dashStyle = 'shortdash'))) %>%
hc_title(text = "Accidents Count of an Airline in years",
style = list(fontWeight = "bold"))ggplot(company_year, aes(x = year , y = death_rate, group = Operator, fill = death_rate)) + geom_bar(stat = "identity")۴. آیا واقعا سن هواپیما در میزان تلفات آن موثر است؟
برای بررسی این موضوع بایستی سن یک هواپیما و نرخ تلفات آن را محسابه کنیم و از آزمون فرض cor.test بهرهمیبریم تا رابطهی این دو متغیر را بیابیم.
همانطور که در نتیجهی این آزمون مشهود است کمتربودن سن یک هواپیما هیچ تاثیری در کمتربودن نرخ کشتهشدگان آن حادثهی هواپیمایی ندارد و این نسبت اندکی به سمت رابطهی عکس است اما دلیل محکمی بر وارونه بودن این فرض نیست، به طور کلی میتوان از نتیجه این برداشت را داشت که هواپیماهایی که از کیفیت مناسبی برخوردار نیستند، زودتر نابود شده و سنین بالا را نمیبینند و از این رو هواپیماهایی که سن زیادی دارند در اولین حادثهی منجر به تلفات کم نیز کاملا از خطوط هوایی خارج میشوند. این تفسیر و تحلیل این نتیجه را تایید میکند که منطقی نیز هست و دادههای کاملا آن را تصدیق میکنند.
age_death = read_csv("Data/asn_c.csv") %>% as.data.frame(stringsAsFactors = F) %>%
mutate(Total_occupants = ifelse(Total_occupants == 0 & Total_fatalities != 0, Total_fatalities, Total_occupants),
Total_survivors = abs(Total_occupants - Total_fatalities)) %>%
mutate(Total_survivors = ifelse(Total_survivors > Total_occupants, Total_occupants, abs(Total_occupants - Total_fatalities))) %>%
mutate(is_army = str_detect(Operator, regex("Force|Navy",ignore_case = T))) %>%
mutate(occ_no = row_number()) %>%
select(C.n.msn, Date, FirstFlight, Total_occupants, Total_fatalities, TotalAirframeHrs) %>%
na.omit() %>%
mutate(age = (Date - FirstFlight), death_rate = (Total_fatalities/Total_occupants)) %>%
group_by(C.n.msn) %>%
summarise(date = max(Date), first_flight = min(FirstFlight), age = max(age), total_airframe = max(TotalAirframeHrs), total_occupants = max(Total_occupants), total_fatalities = max(Total_fatalities)) %>%
mutate(death_rate = (total_fatalities/total_occupants)*100) %>%
filter(!is.nan(death_rate))
cor.test(age_death$age, age_death$death_rate)
Pearson's product-moment correlation
data: age_death$age and age_death$death_rate
t = -7.0953, df = 2760, p-value = 1.634e-12
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.17028842 -0.09702938
sample estimates:
cor
-0.1338417
۵. چه ویژگی هایی از ایرلاین در رخدادهای امنیتی آن تاثیر دارد؟(نظیر قدمت و …)
در این سوال قصد داریم به بررسی قدمت هواپیمایی، میانگین سنهواپیماهای دچار سانحهشده، میزان زمان پرواز، میانگین تعداد خدمه و تعداد حادثههای هر شرکت هواپیمایی و ارتباط آن با میزان نرخ کشندهبود کلی و میانگین نرخ مرگ در سوانح آنّها بپردازیم.
company_attr = read_csv("Data/asn_c.csv") %>% as.data.frame(stringsAsFactors = F) %>%
mutate(Total_occupants = ifelse(Total_occupants == 0 & Total_fatalities != 0, Total_fatalities, Total_occupants),
Total_survivors = abs(Total_occupants - Total_fatalities)) %>%
mutate(Total_survivors = ifelse(Total_survivors > Total_occupants, Total_occupants, abs(Total_occupants - Total_fatalities))) %>%
mutate(is_army = str_detect(Operator, regex("Force|Navy",ignore_case = T))) %>%
mutate(occ_no = row_number()) %>%
filter(is_army == FALSE) %>%
select(C.n.msn,
Date,
Operator,
FirstFlight,
Total_occupants,
Total_fatalities,
TotalAirframeHrs,
Crew_occupants) %>%
na.omit() %>%
mutate(airplane_age = (Date - FirstFlight),
death_rate = (Total_fatalities/Total_occupants)*100) %>%
filter(!is.nan(death_rate)) %>%
group_by(Operator) %>%
summarise(last_event = max(Date),
first_event = min(FirstFlight),
mean_age_plane = mean(airplane_age),
total_airframe = sum(TotalAirframeHrs),
mean_airframe = mean(TotalAirframeHrs),
total_occupants = sum(Total_occupants),
mean_occupants = mean(Total_occupants),
total_fatalities = sum(Total_fatalities),
mean_fatalities = mean(Total_fatalities),
total_crew = sum(Crew_occupants),
mean_crew = mean(Crew_occupants),
death_rate_avg = mean(death_rate),
event_count = n()) %>%
mutate(death_rate_company = (total_fatalities/total_occupants)*100,
company_age = last_event - first_event) %>%
filter(!is.nan(death_rate_company))# total death rate
cor.test(company_attr$company_age, company_attr$death_rate_company)
Pearson's product-moment correlation
data: company_attr$company_age and company_attr$death_rate_company
t = -5.0208, df = 1476, p-value = 5.772e-07
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.17938723 -0.07911754
sample estimates:
cor
-0.1295836
cor.test(company_attr$mean_age_plane, company_attr$death_rate_company)
Pearson's product-moment correlation
data: company_attr$mean_age_plane and company_attr$death_rate_company
t = -4.6472, df = 1476, p-value = 3.665e-06
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.17003347 -0.06952257
sample estimates:
cor
-0.1200857
همانطور که مشاهدهمیشود قدمت شرکت و میانگین سن هواپیماهای آن با نرخ مرگومیر کلی شرکت رابطهی عکس دارد که برای قدمت شرکت میتوان افزایش تجربهی آنها را عامل دانست و برای سن هواپیما نیز استدلالی همچون سوال قبل به کار برد.
cor.test(company_attr$total_airframe, company_attr$death_rate_company)
Pearson's product-moment correlation
data: company_attr$total_airframe and company_attr$death_rate_company
t = -1.3747, df = 1476, p-value = 0.1694
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.08659116 0.01525649
sample estimates:
cor
-0.03576019
cor.test(company_attr$mean_crew, company_attr$death_rate_company)
Pearson's product-moment correlation
data: company_attr$mean_crew and company_attr$death_rate_company
t = 1.4797, df = 1476, p-value = 0.1392
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.01252644 0.08930061
sample estimates:
cor
0.038487
cor.test(company_attr$event_count, company_attr$death_rate_company)
Pearson's product-moment correlation
data: company_attr$event_count and company_attr$death_rate_company
t = 0.059144, df = 1476, p-value = 0.9528
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.04945328 0.05252419
sample estimates:
cor
0.001539456
همانطور که مشاهده میشود میزان پرواز و میانگین تعداد خدمه و تعداد حوادث یک شرکت هواپیمایی ارتباطی با نرخ مرگومیر کلی آن ندارد.
# mean death rate per airplane
cor.test(company_attr$company_age, company_attr$death_rate_avg)
Pearson's product-moment correlation
data: company_attr$company_age and company_attr$death_rate_avg
t = -4.3333, df = 1476, p-value = 1.568e-05
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.16214405 -0.06144413
sample estimates:
cor
-0.1120818
cor.test(company_attr$mean_age_plane, company_attr$death_rate_avg)
Pearson's product-moment correlation
data: company_attr$mean_age_plane and company_attr$death_rate_avg
t = -5.0192, df = 1476, p-value = 5.818e-07
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.17934836 -0.07907763
sample estimates:
cor
-0.1295442
همانطور که مشاهدهمیشود قدمت شرکت و میانگین سن هواپیماهای آن با نرخ مرگومیر میانگین هر سانحهی آن شرکت رابطهی عکس دارد که برای قدمت شرکت میتوان افزایش تجربهی آنها را عامل دانست و برای سن هواپیما نیز استدلالی همچون سوال قبل به کار برد.
cor.test(company_attr$total_airframe, company_attr$death_rate_avg)
Pearson's product-moment correlation
data: company_attr$total_airframe and company_attr$death_rate_avg
t = -0.56442, df = 1476, p-value = 0.5726
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.06562941 0.03632635
sample estimates:
cor
-0.01468971
cor.test(company_attr$mean_crew, company_attr$death_rate_avg)
Pearson's product-moment correlation
data: company_attr$mean_crew and company_attr$death_rate_avg
t = 1.9059, df = 1476, p-value = 0.05686
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.001445471 0.100282549
sample estimates:
cor
0.04954704
cor.test(company_attr$event_count, company_attr$death_rate_avg)
Pearson's product-moment correlation
data: company_attr$event_count and company_attr$death_rate_avg
t = 0.56855, df = 1476, p-value = 0.5697
alternative hypothesis: true correlation is not equal to 0
95 percent confidence interval:
-0.03621909 0.06573636
sample estimates:
cor
0.0147971
همانطور که مشاهده میشود میزان پرواز و میانگین تعداد خدمه و تعداد حوادث یک شرکت هواپیمایی ارتباطی با نرخ مرگومیر میانگین هر سانحهی آن شرکت ندارد.
۶. بدترین خطوط هوایی، بدترین پروازها، بدترین هواپیماها
بدترین خطوط هوایی، بدترین هواپیماها و بدترین فرودگاه ها
ابتدا معیار بد بودن را انتخاب می کنیم، از آنجایی که شرکت هایی که تعداد پایینی پرواز و یا پروازهای کوچکی داشته باشند، در صورت سقوط دارای نرخ پایین زنده ماندن هستند اما در واقع حادثه بزرگی به شمار نمی آیند، تنها خطوط هوایی، هواپیماها و فرودگاه هایی را انتخاب می کنیم که بالای ۵۰۰ نفر مسافر داشته اند. سپس معیار بد بودن را نرخ پایین زنده ماندن در نظر میگیریم.
# worst airline
worst_airline <- casn %>% filter(!is.na(Operator)) %>%
filter(is_army == FALSE) %>%
group_by(Operator) %>%
summarise(Total_occupants = sum(Total_occupants), Total_fatalities = sum(Total_fatalities),
Total_survivors = sum(Total_survivors), Survival_rate = 100*Total_survivors/Total_occupants) %>%
ungroup() %>%
filter(Total_occupants > 500) %>%
top_n(20, wt = desc(Survival_rate)) %>%
arrange(Survival_rate)
p = ggplot(data = worst_airline, mapping = aes(x = reorder(Operator, Survival_rate), y = Survival_rate, fill = Total_fatalities)) +
geom_bar(stat="identity") + scale_fill_gradient(low="brown1", high="brown4") +
ggtitle("Worst Airlines with lowest survival rate") +
xlab("Airline") +
ylab("Survival rate") + guides(color=guide_legend(title="fatality"), fill=guide_legend(title="fatality")) +
coord_flip()
p# worst airplane
worst_airplane <- casn %>% filter(!is.na(Type)) %>%
filter(is_army == FALSE) %>%
group_by(Type) %>%
summarise(Total_occupants = sum(Total_occupants), Total_fatalities = sum(Total_fatalities),
Total_survivors = sum(Total_survivors), Survival_rate = 100*Total_survivors/Total_occupants) %>%
ungroup() %>%
filter(Total_occupants > 500) %>%
top_n(20, wt = desc(Survival_rate)) %>%
arrange(Survival_rate)
p = ggplot(data = worst_airplane, mapping = aes(x = reorder(Type, Survival_rate), y = Survival_rate, fill = Total_fatalities)) +
geom_bar(stat="identity") +
ggtitle("Worst Airplanes with lowest survival rate") +
xlab("Airplane") +
ylab("Survival rate") + guides(color=guide_legend(title="fatality"), fill=guide_legend(title="fatality")) +
coord_flip()
p# worst route
worst_departure_airport <- casn %>% filter(!is.na(DepartureAirport)) %>%
filter(is_army == FALSE) %>%
group_by(DepartureAirport) %>%
summarise(Total_occupants = sum(Total_occupants), Total_fatalities = sum(Total_fatalities),
Total_survivors = sum(Total_survivors), Survival_rate = 100*Total_survivors/Total_occupants) %>%
ungroup() %>%
filter(Total_occupants > 500) %>%
top_n(20, wt = desc(Survival_rate)) %>%
arrange(Survival_rate)
p = ggplot(data = worst_departure_airport, mapping = aes(x = reorder(DepartureAirport, Survival_rate), y = Survival_rate, fill = Total_fatalities)) +
geom_bar(stat="identity") + scale_fill_gradient(low="midnightblue", high="darkred") +
ggtitle("Worst Departure Airports with lowest survival rate") +
xlab("Departure Airport") +
ylab("Survival rate") + guides(color=guide_legend(title="fatality"), fill=guide_legend(title="fatality")) +
coord_flip()
p۷. سالانه چندین تصادف هوایی رخ می دهد؟ چند نفر سوار پرواز بوده اند؟ چند نفر جان سالم به در برده و چند نفر فوت کرده است؟
بررسی روند تلفات رخدادهای امنیتی پروازها در طول سالیان
برای این منظور ابتدا داده ها را بر اساس سال گروه بندی می کنیم، سپس تعداد تلفات، بازماندگان، افراد درگیر در حادثه و نرخ زنده ماندن را بدست می آوریم.(برای سال ۱۹۲۱ داده ی مناسبی به وجود نداشت به همین علت این سال از داده ها حذف شده است.)
# army and civil flights
year_fat <- casn %>% filter(!is.na(Date)) %>% group_by(Date) %>%
summarise(Total_occupants = sum(Total_occupants), Total_fatalities = sum(Total_fatalities),
Total_survivors = sum(Total_survivors), Survival_rate = 100*Total_survivors/Total_occupants)
# remove bad data
year_fat <- year_fat[-c(3),]
highchart() %>%
hc_add_series(data = year_fat, type = "spline", hcaes(x = Date, y = Total_fatalities), name = "Total Fatalities") %>%
hc_add_series(data = year_fat, type = "spline", hcaes(x = Date, y = Total_survivors), name = "Total Survivors") %>%
hc_yAxis(title = list(text = "Count")) %>%
hc_xAxis(title = list(text = "Year")) %>%
hc_title(text = "Fatalities Per Year", style = list(fontWeight = "bold")) %>%
hc_add_theme(hc_theme_flat())همانطور که مشاهده می کنیم، تلفات حوادث در حال کاهش است. البته باید دقت داشته باشیم که این کاهش هم چنین نشانگر این است که استاندارد پرواز ها بالاتر رفته است. زیرا هر چه سال جلوتر می روند، تکنولوژی نیز پیشرفت کرده و تعداد مسافران هواپیماها افزایش یافته و استفاده از سفر هوایی بیشتر می شود. پس تعداد مسافرین بیشتر شده و تعداد کشتگان کمتر می شود که نشان دهنده ی بهبود وضعیت است.
year_fat %>%
hchart(type = "spline", hcaes(x = Date, y = Survival_rate), name = "Survival Rate") %>%
hc_yAxis(title = list(text = "Survival Rate")) %>%
hc_xAxis(title = list(text = "Year")) %>%
hc_title(text = "Survival Rate Per Year", style = list(fontWeight = "bold")) %>%
hc_add_theme(hc_theme_sandsignika())با توجه به نمودارهای بالا همانطور که انتظار داشتیم، نرخ زنده ماندن تقریبا به صورت خطی بیشتر شده است.
۸. در هر کدام از دسته های علت وقوع مشکلات پروازها، چه هواپیماهایی دچار مشکل شدند و چند کشته برجای گذاشته اند؟
۹. آیا وقوع رخدادهایی برای یک ایرلاین باعث بهبود روند آن می شود؟
۱۰. انتخاب ارزان ترین پروازها، به معنی ناامن بودن آنها است؟
۱۱. اضافه کردن معیار امنیت به پروازها
۱۲. رده بندی پروازها بر اساس امنیت
۱۳. تاثیر وقوع سانحه ی هوایی بر روی قیمت بلیت های آن ایرلاین
۱۴. تاثیر تحریم ها بر روی سوانح هوایی ایران و تحلیل سوالات فوق برای ایران